package model.common.dependence;

import java.util.List;

import model.common.namespace.NamedElement;
import model.common.root.DirectedRelationship;
import model.common.root.Element;
import model.common.template.TemplateParameter;
import model.packages.PackageableElement;

/** A Dependency implies that the semantics of the clients are not complete without the suppliers . The presence of Dependency
relationships in a model does not have any runtime semantic implications. The semantics are all given in terms of the
NamedElements that participate in the relationship, not in terms of their instances. */
public class Dependency extends DirectedRelationship {

	// Attributes
	private List<NamedElement> suppliers;

	private List<NamedElement> clients;
	
	private PackageableElement inheritedPackageableElement = null;
	
	// Constructors
	/**
	 * @param source
	 * @param target
	 */
	public Dependency(Element source, Element target) {
		super(source, target);
	}

	/**
	 * @param source
	 * @param target
	 * @param parameteredElement
	 */
	public Dependency(Element source, Element target, TemplateParameter parameteredElement) {
		super(source, target);
		// TODO Poner los atributos adecuados en los parámetros de PackageableElement
		inheritedPackageableElement = new PackageableElement(null, null, null, null, parameteredElement);
	}

}
